package utility;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public abstract class Adgangskodekryptering {
    
    /**
 * Metode tjeker de 2 parametre af krypteret passwords. Returnerer false hvis de er forskellige
 *  og true hvis de er ens.
 * 
 * @param cryptedpass String
 * @param comparepass String
 * @return boolean
 */
    public static boolean isTheSameMD5(String cryptedpass, String comparepass){
        boolean isTheSame = false;
        if(cryptedpass.equals(cryptWithMD5(comparepass))){
            isTheSame = true;
        }
        return isTheSame;
    }
    
    /**
     * Metode kaldes med en String password som konverteres til byte []. På hvert plads i Arrayet
     * laves en krypteret version ved hjælp af et MessageDigest byte[] og et objekt af Stringbuffer.
     * Returnerer krypteret password hvis formateringen lykkedes.
     * 
     * @param pass String
     * @return String
     */
    public static String cryptWithMD5(String pass) {
        try {
            MessageDigest md;
            md = MessageDigest.getInstance("MD5");
            byte[] passBytes = pass.getBytes();
            md.reset();
            byte[] digested = md.digest(passBytes);
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < digested.length; i++) {
                sb.append(Integer.toHexString(0xff & digested[i]));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException ex) {
            System.out.println("Kunne ikke kryptere password");
            return null;
        }
        
    }
}
